Using the Core Reflection API
private final Class ANYREF = null;

public Class[] getArgumentTypes(Object args[]) {
  Class at[] = new Class[args.length];
  for (int i = 0; i < at.length; i++)
    at[i] = args[i]==null? ANYREF: args[i].getClass();
  return at;
}

public boolean isMoreSpecific(Class spec[], Class gen[]) {
  if (spec.length != gen.length)  return false;
  for (int i = 0; i < spec.length; i++)
    if (spec[i] == ANYREF ? gen[i].isPrimitive()
	  : !toPrim(gen[i]).isAssignableFrom(toPrim(spec[i])))
      return false;
  return true;
}

Return to Tracks